Peer-to-peer (P2P) networks generally have decentralized architectures that are easily scalable. This scalability results primarily because each node added to a P2P network adds network resources such as processing power, data storage capacity, and transmission bandwidth, which avoids many bottlenecks that server-client networks experience when adding clients. However, most P2P networks that have been deployed over the Internet have included centralized elements such as super-nodes or tracking nodes. FIG. 1 illustrates one example of a conventional P2P network 100. Network 100 includes peer nodes 110 and 130 and a tracking node 120 that are all capable of communicating with each other over the Internet 150. Each of peer nodes 110 and 130 is typically a computer that executes an application or other software 132 that implements the protocols required of peer nodes in P2P network 100. Tracking node 120 executes software 122 to implement the protocols and to perform additional functions such as maintaining peer lists 124 for distinct content that tracking node 120 tracks.
In a typical operation of P2P network 100, a user at a requesting peer node 110 seeks to retrieve or download specific content 134 and may download a file 136 that identifies tracking node 120 and includes known hash values for use in error detection. Requesting node 110 can then contact tracking node 120. In response, tracking node 120 provides to requesting node 110 a peer list 124 identifying active nodes 130 having copies of content 134. Requesting node 110 uses peer list 124 to initiate transfers of pieces of content 134 by contacting peer nodes 130 having copies of content 134, and peer nodes 130 begin transferring of data via the Internet 150 to node 110. As data are being received, requesting node 110 assembles the data into pieces, which have a fixed size set when content 134 was originally hashed. Requesting peer nodes 110 can simultaneously receive multiple pieces of content from many peer nodes 130 to provide a high download data rate. Requesting node 110 calculates a hash value from each piece received and compares calculated hash values to the known hash values 136. When a hash value calculated from a received piece does not match the hash value from known hash values 136, the piece is discarded, and requesting node 110 contacts a peer node 130 to have the entire piece resent.
Current P2P network 100 has several disadvantages. In particular, tracking node 120 has burdens that increase with the network size and amount of distinct content tracked. In particular, tracking node 120 generally must monitor peer nodes 130 and update peer lists 124 to accurately indicate peer nodes 130 that are currently available. This may require nodes 130 constantly polling tracking node 120, which consumes bandwidth and processing capacity of tracking node 120. Additionally, tracking node 120 may maintain peer lists 124 for a large variety of content and may receive multiple simultaneous requests for content. As a result, monitoring and transmitting peer lists from tracking node 120 can become a bottleneck that slows the entire network 100.
Effective file transfer rates are also diminished in network 100 because pieces are validated as a whole. Typically only a relatively small number of received bits are errors, but when these few errors arise, the requesting node 110 must discard an entire piece. Discarding mostly good data in a large piece and repeating the downloading of the piece slows the effective data transfer rate of network 100.
Another disadvantage of P2P network 100 is that malicious peers could intentionally provide invalid pieces of data that are designed to provide the known hash for a valid piece. Accordingly, invalid pieces may not be detected and can corrupt the copy of content 134 at requesting peer 110. Tracking node 120, which upon completion of a transfer identifies the requesting peer 110 as a source of content 134, allows node 110 to unwittingly propagate the invalid piece to other nodes. Bad data can thus be proliferated through network 100.
A limitation of network 100 is that the P2P protocol implemented in network 100 may be incompatible with protocols implemented in other networks. In particular, peer nodes 130 transfer pieces of a specific fixed size that is required for the consistency of calculated and known hash values. Accordingly, a node 140 storing the desired content 134 but executing software 142 implementing an incompatible protocol, i.e., using different pieces or piece sizes, would be unable to participate in providing content 134 to requesting node 110.
In view of the current state of P2P networks, systems and methods are sought that eliminate or reduce bottlenecks at super-nodes or tracking nodes, improve effective data transfer rates when minor errors occur, improve identification and prevention of malicious data corruption, and are able to bridge or incorporate nodes using different protocols in supplying requested content.